import path from 'node:path'
import { defineConfig, loadEnv } from "vite"
import uni from "@dcloudio/vite-plugin-uni"
import ViteRestart from "vite-plugin-restart"
import AutoImport from "unplugin-auto-import/vite"

// https://vitejs.dev/config/
export default ({ command, mode }) => {
  // mode: 区分生产环境还是开发环境
  console.log("command, mode -> ", command, mode)
  // pnpm dev:h5 时得到 => serve development
  // pnpm build:h5 时得到 => build production
  // pnpm dev:mp-weixin 时得到 => build development (注意区别，command为build)
  // pnpm build:mp-weixin 时得到 => build production
  // pnpm dev:app 时得到 => build development (注意区别，command为build)
  // pnpm build:app 时得到 => build production
  // dev 和 build 命令可以分别使用 .env.development 和 .env.production 的环境变量

  const { UNI_PLATFORM } = process.env
  console.log("UNI_PLATFORM -> ", UNI_PLATFORM) // 得到 mp-weixin, h5, app 等

  const env = loadEnv(mode, path.resolve(process.cwd(), "env"))
  console.log("环境变量 env -> ", env)
  const { VITE_APP_PORT, VITE_SERVER_BASEURL, VITE_DELETE_CONSOLE, VITE_SHOW_SOURCEMAP, VITE_APP_PROXY, VITE_APP_PROXY_PREFIX } = env
  console.log("VITE_APP_PORT -> ", VITE_APP_PROXY)
  console.log("环境变量 env -> ", env)

  return defineConfig({
    envDir: "./env", // 自定义env目录
    plugins: [
      uni(),
      AutoImport({
        imports: ["vue", "uni-app"],
        dirs: ["src/hooks"], // 自动导入 hooks
        vueTemplate: true, // default false
      }),
      ViteRestart({
        // 通过这个插件，在修改vite.config.js文件则不需要重新运行也生效配置
        restart: ["vite.config.js"],
      }),
    ],
    define: {
      __UNI_PLATFORM__: JSON.stringify(UNI_PLATFORM),
      __VITE_APP_PROXY__: JSON.stringify(VITE_APP_PROXY),
    },
    css: {
      postcss: {
        plugins: [
          // autoprefixer({
          //   // 指定目标浏览器
          //   overrideBrowserslist: ['> 1%', 'last 2 versions'],
          // }),
        ],
      },
    },
    resolve: {
      alias: {
        '@': path.resolve(__dirname, 'src'),
        "@img": path.join(process.cwd(), "./src/static/images"),
      },
    },
    server: {
      // host: "0.0.0.0",
      // // host: '192.168.1.101',
      // hmr: true,
      // port: Number.parseInt(VITE_APP_PORT, 10),
      // // 仅 H5 端生效，其他端不生效（其他端走build，不走devServer)
      // proxy: JSON.parse(VITE_APP_PROXY)
      //   ? {
      //       [VITE_APP_PROXY_PREFIX]: {
      //         target: VITE_SERVER_BASEURL,
      //         changeOrigin: true,
      //         rewrite: path => path.replace(new RegExp(`^${VITE_APP_PROXY_PREFIX}`), ""),
      //       },
      //     }
      //   : undefined,
    },
    build: {
      // 方便非h5端调试
      sourcemap: VITE_SHOW_SOURCEMAP === "true", // 默认是false
      target: "es6",
      // 开发环境不用压缩
      minify: mode === "development" ? false : "terser",
      terserOptions: {
        compress: {
          drop_console: VITE_DELETE_CONSOLE === "true",
          drop_debugger: true,
        },
      },
    },
    publicDir: 'static', // 确保 static 目录被识别为静态资源目录
  })
}
